package com.softeem.work;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 使用一个泛型方法,实现指定位置上的两个元素之间就进行交换
 */
public class T2 {
    /**
     * 交换数组中两个位置上的元素
     * @param arr 要进行交换元素的数组
     * @param i 第一个元素的位置
     * @param j 第二个元素的位置
     * @param <T> 类型
     */
    public static <T> void swap(T[] arr,int i, int j){
        //数组的元素不存在或者数组为空
        if(arr == null || arr.length == 0){
            return;
        }
        //要进行位置交换的元素的下标异常
        if(i < 0 || i >= arr.length || j < 0 || j >= arr.length){
            return;
        }
        //将第一个元素给到中间值
        T temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    //如果要对集合中的元素进行位置的交换
    public static <T> void swap(List<T> list, int i, int j){
        //数组的元素不存在或者数组为空
        if(list == null || list.size() == 0){
            return;
        }
        //要进行位置交换的元素的下标异常
        if(i < 0 || i >= list.size() || j < 0 || j >= list.size()){
            return;
        }
        //集合中的元素位置交换
        T temp = list.get(i);//将第一个位置的元素取出来
        list.set(i,list.get(j));//将第二个元素放在第一个元素的位置
        list.set(j,temp);//将存储第一个元素的中间变量值取出来放在第二个元素的位置上
    }


    public static void main(String[] args) {
        String[] arr = {"张三丰","张翠山","张无忌","谢逊"};
        T2.swap(arr,1,2);
        System.out.println(Arrays.toString(arr));

        ArrayList<String> list = new ArrayList<String>();
        list.add("张三丰");
        list.add("张翠山");
        list.add("张无忌");
        list.add("谢逊");
        System.out.println(list);
        T2.swap(list,1,2);
        System.out.println(list);

    }
}
